/// 题⽬2：实现⼀个算法，⽀持任意2-16进制数之间转换，如：2进制转7进制，7进制转16进制，15进制转8进制等。(20)
/// 输⼊: 9(10), 8 #输⼊两个参数：10进制的9(字符串)，转换⽬标进制8(数字)，输出：11  
/// #返回结果，8进制的11(字符串)  
/// 输⼊: 1111(2), 15 #输⼊2进制的1111，转换为15进制  
/// 输出：10(15)  
/// #返回结果，15进制的10(字符串)
pub fn convert_base(num_str: &str, to_base: u32) -> String {
    let (num, base) = num_str.split_once('(').unwrap();
    let base: u32 = base[..base.len()-1].parse().unwrap();
    let num = u32::from_str_radix(num, base).unwrap();
    format_radix(num, to_base)
}

fn format_radix(mut x: u32, radix: u32) -> String {
    if x == 0 {
        return String::from("0");
    }
    
    std::iter::from_fn(|| {
        if x == 0 { None } else {
            let m = x % radix;
            x /= radix;
            char::from_digit(m, radix)
        }
    })
    .collect::<Vec<char>>()
    .into_iter()
    .rev()
    .collect()
}